using System.Threading.Tasks;

namespace Pinwheel.Kernel
{
    public interface IServiceManagerContext
    {
        IServiceManager ServiceManager { get; }
    }
    
    public interface IInfoContext : IServiceManagerContext
    {
        PID Self { get; }
        PID Sender { get; }
        IService Service { get; }
    }
    
    public interface IContext : IInfoContext
    {
        IMessage Message { get; }
        Task RespondAsync(IMessage message);
        Task SendAsync(IMessage message);
    } 
}
